home *** CD-ROM | disk | FTP | other *** search
- package symantec.itools.awt;
-
- class Matrix {
- Matrix rowHead;
- Matrix nextRow;
- Matrix nextElt;
- int row;
- int col;
- // $FF: renamed from: o java.lang.Object
- Object field_0;
- static boolean debug;
-
- public Matrix() {
- this.rowHead = this;
- }
-
- private Matrix(int var1, int var2, Object var3) {
- this(var1, var2, var3, (Matrix)null);
- }
-
- private Matrix(int var1, int var2, Object var3, Matrix var4, Matrix var5, Matrix var6) {
- if (var4 == null) {
- if (var2 != 0) {
- this.rowHead = new Matrix(var1, 0, (Object)null, (Matrix)null, var5, this);
- } else {
- this.rowHead = this;
- }
- } else {
- this.rowHead = var4;
- }
-
- this.row = var1;
- this.col = var2;
- this.field_0 = var3;
- this.nextRow = var5;
- this.nextElt = var6;
- }
-
- private Matrix(int var1, int var2, Object var3, Matrix var4, Matrix var5) {
- this(var1, var2, var3, (Matrix)null, var4, var5);
- }
-
- private Matrix(int var1, int var2, Object var3, Matrix var4) {
- this(var1, var2, var3, (Matrix)null, var4, (Matrix)null);
- }
-
- public void removeAllElements() {
- this.nextRow = null;
- this.nextElt = null;
- this.field_0 = null;
- }
-
- public void addElement(int var1, int var2, Object var3) throws IllegalArgumentException {
- if (debug) {
- this.checkPrecondition(var1, var2);
- }
-
- Matrix var4 = this.nearest(var1, var2);
- if (var4.row != var1) {
- var4.setNextRow((new Matrix(var1, var2, var3, var4.nextRow)).rowHead);
- } else if (var2 == var4.col && var2 == 0) {
- if (var4.field_0 != null) {
- throw new IllegalArgumentException("Element already in Matrix");
- } else {
- var4.field_0 = var3;
- }
- } else {
- var4.nextElt = new Matrix(var1, var2, var3, var4.rowHead, var4.nextRow, var4.nextElt);
- }
- }
-
- void setNextRow(Matrix var1) {
- for(Matrix var2 = this; var2 != null; var2 = var2.nextElt) {
- var2.nextRow = var1;
- }
-
- }
-
- public void updateElement(int var1, int var2, Object var3) {
- Matrix var4 = this.nearest(var1, var2);
-
- try {
- if (var4 == null) {
- this.addElement(var1, var2, var3);
- } else if (var4.row == var1 && var4.col == var2) {
- var4.field_0 = var3;
- } else {
- var4.addElement(var1, var2, var3);
- }
- } catch (IllegalArgumentException var6) {
- ((Throwable)var6).printStackTrace();
- }
- }
-
- Matrix nearest(int var1, int var2) {
- Matrix var3;
- for(var3 = this; var1 > var3.row; var3 = var3.nextRow) {
- if (var3.nextRow == null || var3.nextRow.row > var1) {
- return var3;
- }
- }
-
- while(var3.nextElt != null && var2 >= var3.nextElt.col) {
- var3 = var3.nextElt;
- }
-
- return var3;
- }
-
- public Object elementAt(int var1, int var2) throws NullPointerException {
- Matrix var3 = this.nearest(var1, var2);
- if (var3 != null && var3.row == var1 && var3.col == var2 && var3.field_0 != null) {
- return var3.field_0;
- } else {
- throw new NullPointerException("Element row: " + var1 + " col=" + var2 + " is not in matrix");
- }
- }
-
- public void removeElementAt(int var1, int var2) {
- Matrix var3 = this.nearest(var1, var2);
- if (var3 != null && var3.row == var1 && var3.col == var2) {
- if (var2 == 0) {
- var3.field_0 = null;
- } else {
- Matrix var4;
- for(var4 = var3 = var3.rowHead; var3.col != var2; var3 = var3.nextElt) {
- var4 = var3;
- }
-
- var4.nextElt = var3.nextElt;
- }
- }
- }
-
- public void removeRow(int var1) {
- Matrix var2 = this.nearest(var1, 0);
- if (var2.row == var1) {
- var2 = var2.rowHead;
- var2.field_0 = null;
- var2.nextElt = null;
- }
-
- }
-
- public void insertRow(int var1) {
- Matrix var2;
- if (var1 == 0) {
- var2 = new Matrix();
- var2.setNextRow(this);
- } else {
- var2 = this.nearest(var1 - 1, 0);
- Matrix var3 = new Matrix(var1, 0, (Object)null, var2.nextRow);
- var2.setNextRow(var3);
- var2 = var3;
- }
-
- if (var2.nextRow.row == var1) {
- var2 = var2.nextRow;
-
- while(var2 != null) {
- ++var1;
- var2.updateRowNum(var1);
- var2 = var2.nextRow;
- if (var2.row != var1) {
- return;
- }
- }
- }
-
- }
-
- public void sort(CompareFunc var1, int var2) {
- this.compact();
- boolean var3 = true;
- Matrix var4 = this;
- Object var5 = null;
-
- while(var4 != null) {
- Matrix var6 = this.findLeast(var1, var4, var2, var3);
- if (var6 != null) {
- if (var4.row == 0 && var3) {
- var3 = false;
- this.swapRows(var6);
- var4 = this;
- continue;
- }
-
- this.swapRows(var4, var6);
- }
-
- if (var3) {
- var3 = false;
- } else {
- var4 = var4.nextRow;
- }
- }
-
- this.compact();
- }
-
- Matrix findLeast(CompareFunc var1, Matrix var2, int var3, boolean var4) {
- if (!var4) {
- var2 = var2.nextRow;
- }
-
- if (var2 != null && var2.nextRow != null) {
- Matrix var5 = var2.nextRow.rowHead;
- Matrix var6 = var2.rowHead;
- Matrix var7 = null;
- var2 = var2.nearest(var2.row, var3);
-
- while(var5 != null) {
- var5 = var5.nearest(var5.row, var3);
- if (var5.col != var3) {
- var6 = var5.rowHead;
- var5 = var5.nextRow;
- } else if (var2.col != var3) {
- var2 = var5;
- var7 = var6;
- } else {
- if (var1.lessThan(var5.field_0, var2.field_0)) {
- var2 = var5;
- var7 = var6;
- }
-
- var6 = var5.rowHead;
- var5 = var5.nextRow;
- }
- }
-
- return var7;
- } else {
- return null;
- }
- }
-
- protected void swapRows(Matrix var1, Matrix var2) {
- Matrix var3 = var1.nextRow;
- Matrix var4 = var3.nextRow;
- Matrix var5 = var2.nextRow;
- Matrix var6 = var5.nextRow;
- var1.setNextRow(var5);
- var2.setNextRow(var3);
- if (var2 == var3) {
- var5.setNextRow(var3);
- } else {
- var5.setNextRow(var4);
- }
-
- var3.setNextRow(var6);
- int var7 = var3.row;
- var3.updateRowNum(var5.row);
- var5.updateRowNum(var7);
- }
-
- protected void swapRows(Matrix var1) {
- Matrix var2 = var1.nextRow;
- Matrix var3 = new Matrix(-1, var2.col, this.field_0, (Matrix)null, this.nextElt);
- var1.rowHead.setNextRow(var3);
- var3.setNextRow(var2.nextRow);
- var3.updateRowNum(var2.row);
- var3.setRowHead();
- this.nextElt = var2.nextElt;
- this.field_0 = var2.field_0;
- this.setNextRow(this.nextRow);
- this.updateRowNum(0);
- this.setRowHead();
- }
-
- void setRowHead() {
- Matrix var1 = this.nextElt;
-
- for(Matrix var2 = this; var1 != null; var1 = var1.nextElt) {
- var1.rowHead = var2;
- }
-
- }
-
- public void printRow(int var1) {
- Matrix var2 = this.nearest(var1, 0);
- if (var2.row != var1) {
- var2 = var2.nextRow;
- if (var2.row != var1) {
- System.out.println("Row " + var1 + " is not in the matrix");
- return;
- }
- }
-
- System.out.println("-------- Printing row " + var1 + " ----------");
-
- while(var2 != null) {
- System.out.println("Row=" + var2.row + " Col=" + var2.col + " value=" + var2.field_0);
- var2 = var2.nextElt;
- }
-
- }
-
- public void compact() {
- int var1 = 0;
- Matrix var2 = this;
- Matrix var3 = null;
-
- while(var2 != null) {
- if (var2.nextElt == null && var2.field_0 == null) {
- var2 = var2.nextRow;
- } else {
- var2.updateRowNum(var1++);
- if (var3 != null && var3.nextRow != var2) {
- var3.setNextRow(var2);
- }
-
- var3 = var2;
- var2 = var2.nextRow;
- }
- }
-
- }
-
- public int rows() {
- this.compact();
-
- Matrix var1;
- for(var1 = this; var1.nextRow != null; var1 = var1.nextRow) {
- }
-
- return var1.row + 1;
- }
-
- private void updateRowNum(int var1) {
- for(Matrix var2 = this; var2 != null; var2 = var2.nextElt) {
- var2.row = var1;
- }
-
- }
-
- MatrixEnumeration elements() {
- return new MatrixEnumeration(this);
- }
-
- public String toString() {
- return "Matrix: row=" + this.row + " col=" + this.col + " o=" + this.field_0;
- }
-
- private void checkPrecondition(int var1, int var2) throws IllegalArgumentException {
- if (var1 < 0 || var2 < 0 || var1 < this.row || var2 < this.col) {
- throw new IllegalArgumentException("Failed precondition check: r=" + var1 + " c=" + var2);
- }
- }
- }
-